使用fetch()获取响应头的content | 您所在的位置:网站首页 › 响应头content disposition › 使用fetch()获取响应头的content |
需求就是下载一个Excel文件,包括下载,导出,都是调用后端的接口。因为文件名返回再了响应头的content-disposition。前端需要进行一个处理,拿到文件名。
这里使用fetch()去调用,是因为需要拿到响应头。而我们项目封装的api,经过响应拦截,直接返回的是response.data。拿不到response的话,就没法拿到其中的headers。为了不影响全局的api使用,就对下载文件的方法,单独使用fetch来处理。 注意事项: fetch(url).then( res => res.blob() ) .then( blob =>{ } ) fetch()的第一个then回调返回的是response,第二个then返回的才是后端的数据。 但考虑到我需要获取文件名,并进行分割,解码等操作。所以我直接在fetch()的第一个then里获取response之后进行代码逻辑的编写。我们需要将response转为blob对象数据,可以使用res.blob()方法。 decodeURIComponent() 函数可对 encodeURIComponent() 函数编码的 URI 进行解码。 const blob = res.blob( ) // 这种写法是错误的,取到的是undefined 它的回调res才是真正想要的blob数据 res.blob().then(res=>{ console.log(‘blob值:’,res) }) |
CopyRight 2018-2019 实验室设备网 版权所有 |